Из всех спецификаций World Wide Web только спецификация URI доведена до
состояния Необходимость в URI была понятна разработчикам WWW c момента зарождения
системы, т.к. предполагалось объединение в единую информационную среду средств,
использующих различные способы идентификации информационных ресурсов.
Первоначально это были FTP архивы, информационно-поисковая система Alise и
справочная система ЦЕРН. Однако Бернерс Ли подошел к делу основательно и
разработал спецификацию, которая включала в себя обращения к FTP, Gopher, WAIS,
Usenet, E-mail, Prospero, Telnet, Whois, X500 и конечно HTTP(WWW). В итоге была
разработана универсальная спецификация, которая позволяет расширять список
адресуемых ресурсов за счет появления новых.
Место применения URI -- гипертестовые ссылки, которые записываются в тагах
< A HREF=URI > и < LINK HREF=URI >. Встраиваемые графические объекты
также адресуются по спецификации URI в тагах < IMG SRC=URI > и <FIG
SRC=URI >. Реализация URI для WWW называется URL(Uniform Resource Locator).
Точнее, URL -- это реализация схемы URI, отображенная на алгоритм доступа к
ресурсам по сетевым протоколам. Существует еще и URN (Uniform Resource Name),
которое отображает URI в пространство имен на сети. Вообще говоря, на мой взгляд
это уже перебор. Собственно, появление URN связано с желанием адресовать части
почтового сообщения MIME. Но здесь есть момент, который находится в стадии
дебатов. Сообщение "живет" не более 5 дней. Если оно сохранено, то его можно
превратить в другой информационный ресурс, например WWW страницу. Поэтому судьба
URN еще не решена.
При разработке URI преследовались следующие принципы:
Расширяемость -- новые адресные схемы должны были легко вписываться в
существующий синтаксис URI.
Полнота -- по возможности, любая из существовавших схем должна была
описываться посредством URI.
Читаемость -- адрес должен был быть легко читаем человеком, что вообще
характерно для технологии WWW -- документы вместе с ссылками могут
разрабатываться в обычном текстовом редакторе.
Полнота и Читаемость
порождали коллизию, связанную с тем, что в некоторых схемах используется
двоичная информация. Эта проблема была решена за счет формы представления такой
информации. Символы, которые несут служебные функции и двоичные данные
отображаются в URI в шестнадцатеричном коде и предваряются символом "%".
Прежде, чем рассмотреть различные схемы представления
адресов, приведем пример простого адреса
URI: Перед двоеточием стоит имя схемы адреса -- "http". Это имя отделено
двоеточием от остатка URI, который называется путь. В данном случае путь состоит
из доменного адреса машины, на которой установлен сервер HTTP и пути от корня
дерева сервера к файлу "index.html".
Кроме представленной выше полной записи URI, существует упрощенная. Она
предполагает, что к моменту ее использования многие параметры адреса ресурса уже
определены (протокол, адрес машины в сети, некоторые элементы пути). При таких
предположениях автор гипертекстовых страниц может указывать только относительный
адрес ресурса, т.е. адрес относительный базовых определенных ресурсов.
В RFC 1630 рассмотрено 8 схем адресации ресурсов internet и указаны две, чей
синтаксис находится в стадии обсуждения.
Схема HTTP. Это основная схема для WWW. В
схеме указывается ее идентификатор, адрес машины, TCP порт, путь в директории
сервера, поисковый критерий и метка. Приведем несколько примеров URI для схемы
HTTP. Это наиболее распространенный вид URI, применяемый в документах WWW. Вслед за
именем схемы (http) следует путь, состоящий из доменного адреса машины и полного
адреса HTML документа в дереве сервера HTTP.
В качестве адреса машины допустимо использование и IP
адреса: При
указании адреса ресурса возможна ссылка на точку внутри файла HTML. Для этого
вслед за именем документа может быть указана метка внутри
документа: Символ
"#" разделяет имя документа от имени метки. Другая возможность схемы HTTP --
передача параметров. Первоначально предполагалось, что в качестве параметров
будут передаваться ключевые слова, но, помере развития механизма SGI скриптов, в
качестве параметров стала передаваться и другая
информация. В
данном примере предполагается, что документ "isindex.html" - документ с
возможностью поиска по ключевым словам. При этом в зависимости от поисковой
машины (программы, реализующей поиск) знак "+" будет интерпритироваться либо как
"AND", либо как "OR". Вообще говоря, "+" - заменяет " " и относится к классу
неотображаемых символов. Если необходимо передать такой символ в строке
параметров, то следует передавать в шестнадцатиричном виде его ASCII
код. В
данном случае имется один параметр в котором два слова разделены пробелом.
Символ "%" обозначает начало ASCII кода, который продолжается до первого символа
отличного от цифры.
При использовании HTML Forms параметры передаются как поименованные
поля: Схема FTP
Данная схема
позволяет адресовать файловые архивы FTP из программ-клиентов World Wide Web.
При этом программа должна поддерживать протокол FTP. В данной схеме возможно
указание не только имени схемы, адреса FTP архива, но и идентификатора
пользователя и даже его пароля. Наиболее часто данная схема используется для
доступа к публичным архивам
FTP: В данном случае
записана ссылка на архив "polyn.net.kiae.su" c идентификатором "anonymous" или
"ftp" (анонимный доступ). Если есть необходимость указать идентификатор
пользователя и его пароль, то можно это сделать перед адресом
машины: В
данном случае эти параметры отделены от адреса машины символом "@", и отделены
друг от друга двоеточием. В некоторых системах можно указать и тип передаваемой
информации, но данная возможность не стандартизирована. Стандарт рекомендует
определять тип по характеру данных (текстовая информация- ASCII, двоичная -
IMAGE). Следует также учитывать, что употребление идентификатора пользователя и
его пароля не рекомендованно, т.к. данные передаются незашифрованными и могут
быть перехвачены. Реальная защита в WWW осуществляется другими средствами и
построена на других принципах.
Схема Gopher. Данная схема
используется для ссылки на рисурсы распределенной информационной системы Gopher.
Схема состоит из идентификатора и пути, в котором указывается адрес Gopher
сервера, тип ресурса и команда
Gopher. В данном примере
осуществляется доступ к gopher серверу gopher.kiae.su черз порт 70 для поиска
(тип 7) слова "kuku". Следует заметить, что gopher тип, в данном случае 7,
передается не перед командой, а вслед за ней.
Схема MAILTO. Данная схема предназначена для отправки почты по
стандарту RFC822(стандарт почтового сообщения). Общий вид схемы выглядит
как: Схема NEWS. Данная схема
используется для просмотра сообщений системы Usenet. При использовании этой
схемы используется следующая
нотация: В данном случае можно
получить статьи и группы "comp.infosystems.gopher" в режиме уведомления. Можно
получить и текст статьи, но в этом случае указывают ее
идентификатор: Заказана 86
статья из группы.
Схема NNTP. Это еще одна
схема получения доступа к ресурсам Usenet. В данной схеме обращение к группе
comp.infosystems.gopher для получения 86 статьи будет выглядеть
так: Схема TELNET. Доступ к
ресурсу в режиме удаленного терминала осуществляется по это схеме. Обычно,
клиент вызывает дополнительную программу для работы по протоколу telnet. При
использовании этой схемы необходимо указывать идентификатор пользователя, и
возможно использование пароля. Реально, доступ осуществляется к публичным
ресурсам и идентификатор и пароль являются общеизвестными, например их можно
узнать в базах данных
Hytelnet. Схема WAIS. WAIS --
распределенная информационно-поисковая система. Учитывая, что она работает в
двух режимах: поиска и просмотра. При поиске используется форма со знаком "?",
отделяющим адресную часть в пути от ключевых
слов: В данном случае
обращаются к базе данных wais на сервере wais.think.com с запросом на поиск
документов со словом guide. Сервер должем вернуть клиенту список документов.
После получения этого списка можно использовать вторую форму схемы wais --
запрос на просмотр
документа:
http://polyn.net.kiae.su/polyn/index.html
http://polyn.net.kiae.su/polyn/manifest.html
http://144.206.160.40/risk/risk.html
Если сервер
протокола HTTP запущен на другой, отличный от 80 порт TCP, то это отражается в
адресе:http://144.206.130.137:8080/altai/index.html
http://polyn.net.kiae.su/altai/volume4.html#first
http://polyn.net.kiae.su/isindex.html?keyword1+keyword2
http://polyn.net.kiae.su/isindex.html?keyword1%20keyword2
http://polyn.net.kiae.su/isindex.html?field1=value1+field2=value2
Значения
"field1" и "field2" - это имена полей, а "value1" и "value2" - их значения. При
этом приведенному выше URI может соответствовать следующая HTML
форма:< FORM ACTION=http://polyn.net.kiae.su/cgi-bin/test >
Введите заначения полей:
Поле "field1":< INPUT NAME="filed1"
VALUE="value1" >
Поле "field2":< INPUT NAME="field2" VALUE="value2"
>
< HR >
< /FORM > ftp://polyn.net.kiae.su/pub/0index.txt
ftp://nobody:password@polyn.net.kiae.su/users/local/pub
gopher://gopher.kiae.su:70:/7/kuku
mailto:paul@quest.polyn.kiae.su
news:comp.infosystems.gopher
news:086@comp.infosystems.gopher
nntp:comp.infosystems.gopher/086
следует обратить
внимание на то, что адрес сервера Usenet не указан. Программа-клиент должна быть
предварительно сконфигурирована на работу с одним из серверов Usenet. Сама
служба Usenet является распределенным информационным ресурсом и группа
comp.infosystems.gopher на сервере в домене kiae.su или где-либо еще в мире
содержит одни и те же сообщения.
telnet://guest:password@apollo.polyn.kiae.su
wais://wais.think.com/wais?guide
wais://wais.think.com/wais/wtype/039=/kuku/kuku.txt
039
-- это идентификатор документа. Следует заметить, что не все клиенты умеют
работать с этой схемой, и вряде случаев следует пользоваться другими средствами.
Схема wais хороша там, где надо обслуживать постоянно действующий запрос,
который неизменен на протяжении длительного времени, но при этом выдает свежие
документы.